package com.tools.Fisco;

import org.fisco.bcos.sdk.abi.FunctionReturnDecoder;
import org.fisco.bcos.sdk.abi.TypeReference;
import org.fisco.bcos.sdk.abi.datatypes.*;
import org.fisco.bcos.sdk.abi.datatypes.generated.Int256;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.contract.Contract;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.eventsub.EventCallback;
import org.fisco.bcos.sdk.model.CryptoType;
import org.fisco.bcos.sdk.model.TransactionReceipt;
import org.fisco.bcos.sdk.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

@SuppressWarnings("unchecked")
public class CompanyGoesTGtable extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040526040805190810160405280601881526020017f636f6d70616e795f676f65735f7461626c655f74657365330000000000000000815250600190805190602001906200005192919062000178565b503480156200005f57600080fd5b506110016000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356004b6a60016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200011b9190620003d7565b602060405180830381600087803b1580156200013657600080fd5b505af11580156200014b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200017191908101906200023d565b5062000441565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001bb57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001eb578251825591602001919060010190620001ce565b5b509050620001fb9190620001ff565b5090565b6200022491905b808211156200022057600081600090555060010162000206565b5090565b90565b600062000235825162000437565b905092915050565b6000602082840312156200025057600080fd5b6000620002608482850162000227565b91505092915050565b600081546001811660008114620002895760018114620002aa57620002ef565b607f600283041680865260ff198316602087015260408601935050620002ef565b60028204808652602086019550620002c28562000425565b60005b82811015620002e657815481890152600182019150602081019050620002c5565b80880195505050505b505092915050565b6000607d82527f636f6d70616e795f4e616d652c726567697374657265645f6361706974616c2c60208301527f746f74616c5f7368617265732c6f66666572696e675f70726963652c6f66666560408301527f72696e675f6e756d6265722c6372656174655f646174652c6f66666572696e6760608301527f5f747970652c6f66666572696e675f616464726573732c737461747573000000608083015260a082019050919050565b6000601a82527f556e69666965645f736f6369616c5f6372656469745f636f64650000000000006020830152604082019050919050565b60006060820190508181036000830152620003f3818462000269565b905081810360208301526200040881620003a0565b905081810360408301526200041d81620002f7565b905092915050565b60008160005260206000209050919050565b6000819050919050565b61239080620004516000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063ce69129f1461005c578063d7bb3d1c14610099578063fcd7e3c1146100c4575b600080fd5b34801561006857600080fd5b50610083600480360361007e91908101906118f5565b610101565b6040516100909190611d71565b60405180910390f35b3480156100a557600080fd5b506100ae6108d1565b6040516100bb9190611d8c565b60405180910390f35b3480156100d057600080fd5b506100eb60048036036100e69190810190611873565b61096f565b6040516100f89190612194565b60405180910390f35b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161017e9190611e0e565b602060405180830381600087803b15801561019857600080fd5b505af11580156101ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101d09190810190611821565b92508273ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061026e91908101906117f8565b91508173ffffffffffffffffffffffffffffffffffffffff1663e942b51686600001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016102c9919061208e565b600060405180830381600087803b1580156102e357600080fd5b505af11580156102f7573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b51686602001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016103549190611f9d565b600060405180830381600087803b15801561036e57600080fd5b505af1158015610382573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba7486604001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016103df9190611ff2565b600060405180830381600087803b1580156103f957600080fd5b505af115801561040d573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba7486606001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161046a9190612166565b600060405180830381600087803b15801561048457600080fd5b505af1158015610498573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba7486608001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104f59190612040565b600060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba748660a001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105809190611f4f565b600060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168661012001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161060c9190611efa565b600060405180830381600087803b15801561062657600080fd5b505af115801561063a573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168660e001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106979190611e50565b600060405180830381600087803b1580156106b157600080fd5b505af11580156106c5573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b5168661010001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016107239190611ea5565b600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16632ef8ba748660c001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016107ae9190612118565b600060405180830381600087803b1580156107c857600080fd5b505af11580156107dc573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff166331afac368660000151846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161083b929190611dde565b602060405180830381600087803b15801561085557600080fd5b505af1158015610869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061088d919081019061184a565b90507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce816040516108be9190611d71565b60405180910390a1809350505050919050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109675780601f1061093c57610100808354040283529160200191610967565b820191906000526020600020905b81548152906001019060200180831161094a57829003601f168201915b505050505081565b61097761146e565b600080600061098461146e565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c960016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109fe9190611e0e565b602060405180830381600087803b158015610a1857600080fd5b505af1158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a509190810190611821565b95508573ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ab657600080fd5b505af1158015610aca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610aee91908101906117a6565b94508473ffffffffffffffffffffffffffffffffffffffff1663cd30a1d1896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b4591906120c3565b600060405180830381600087803b158015610b5f57600080fd5b505af1158015610b73573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff1663e8434e3989876040518363ffffffff167c0100000000000000000000000000","000000000000000000000000000000028152600401610bce929190611dae565b602060405180830381600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c2091908101906117cf565b9350600091505b8373ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610c8b57600080fd5b505af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cc3919081019061184a565b821215611460578373ffffffffffffffffffffffffffffffffffffffff1663846719e0836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d1f9190611d71565b602060405180830381600087803b158015610d3957600080fd5b505af1158015610d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d7191908101906117f8565b90508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610dc69061206e565b600060405180830381600087803b158015610de057600080fd5b505af1158015610df4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610e1d91908101906118b4565b83600001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610e7890611f7d565b600060405180830381600087803b158015610e9257600080fd5b505af1158015610ea6573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610ecf91908101906118b4565b83602001819052508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610f2a90611fd2565b602060405180830381600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f7c919081019061184a565b8360400181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610fd890612146565b602060405180830381600087803b158015610ff257600080fd5b505af1158015611006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061102a919081019061184a565b8360600181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161108690612020565b602060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110d8919081019061184a565b8360800181815250508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161113490611f2f565b602060405180830381600087803b15801561114e57600080fd5b505af1158015611162573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611186919081019061184a565b8360a00181815250508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016111e290611eda565b600060405180830381600087803b1580156111fc57600080fd5b505af1158015611210573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061123991908101906118b4565b8361012001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161129590611e30565b600060405180830381600087803b1580156112af57600080fd5b505af11580156112c3573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506112ec91908101906118b4565b8360e001819052508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161134790611e85565b600060405180830381600087803b15801561136157600080fd5b505af1158015611375573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061139e91908101906118b4565b8361010001819052508073ffffffffffffffffffffffffffffffffffffffff1663fda69fae6040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016113fa906120f8565b602060405180830381600087803b15801561141457600080fd5b505af1158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061144c919081019061184a565b8360c0018181525050816001019150610c27565b829650505050505050919050565b61014060405190810160405280606081526020016060815260200160008152602001600081526020016000815260200160008152602001600081526020016060815260200160608152602001606081525090565b60006114ce825161228d565b905092915050565b60006114e2825161229f565b905092915050565b60006114f682516122b1565b905092915050565b600061150a82516122c3565b905092915050565b600061151e82356122d5565b905092915050565b600061153282516122d5565b905092915050565b600082601f830112151561154d57600080fd5b813561156061155b826121e3565b6121b6565b9150808252602083016020830185838301111561157c57600080fd5b611587838284612303565b50505092915050565b600082601f83011215156115a357600080fd5b81356115b66115b18261220f565b6121b6565b915080825260208301602083018583830111156115d257600080fd5b6115dd838284612303565b50505092915050565b600082601f83011215156115f957600080fd5b815161160c6116078261220f565b6121b6565b9150808252602083016020830185838301111561162857600080fd5b611633838284612312565b50505092915050565b6000610140828403121561164f57600080fd5b61165a6101406121b6565b9050600082013567ffffffffffffffff81111561167657600080fd5b6116828482850161153a565b600083015250602082013567ffffffffffffffff8111156116a257600080fd5b6116ae8482850161153a565b60208301525060406116c284828501611512565b60408301525060606116d684828501611512565b60608301525060806116ea84828501611512565b60808301525060a06116fe84828501611512565b60a08301525060c061171284828501611512565b60c08301525060e082013567ffffffffffffffff81111561173257600080fd5b61173e8482850161153a565b60e08301525061010082013567ffffffffffffffff81111561175f57600080fd5b61176b8482850161153a565b6101008301525061012082013567ffffffffffffffff81111561178d57600080fd5b6117998482850161153a565b6101208301525092915050565b6000602082840312156117b857600080fd5b60006117c6848285016114c2565b91505092915050565b6000602082840312156117e157600080fd5b60006117ef848285016114d6565b91505092915050565b60006020828403121561180a57600080fd5b6000611818848285016114ea565b91505092915050565b60006020828403121561183357600080fd5b6000611841848285016114fe565b91505092915050565b60006020828403121561185c57600080fd5b600061186a84828501611526565b91505092915050565b60006020828403121561188557600080fd5b600082013567ffffffffffffffff81111561189f57600080fd5b6118ab84828501611590565b91505092915050565b6000602082840312156118c657600080fd5b600082015167ffffffffffffffff8111156118e057600080fd5b6118ec848285016115e6565b91505092915050565b60006020828403121561190757600080fd5b600082013567ffffffffffffffff81111561192157600080fd5b61192d8482850161163c565b91505092915050565b61193f816122df565b82525050565b61194e816122f1565b82525050565b61195d81612283565b82525050565b600061196e82612258565b808452611982816020860160208601612312565b61198b81612345565b602085010191505092915050565b60006119a48261224d565b8084526119b8816020860160208601612312565b6119c181612345565b602085010191505092915050565b6000815460018116600081146119ec5760018114611a0c57611a4d565b607f600283041680865260ff198316602087015260408601935050611a4d565b60028204808652602086019550611a228561223b565b60005b82811015611a4457815481890152600182019150602081019050611a25565b80880195505050505b505092915050565b6000600d82527f6f66666572696e675f74797065000000000000000000000000000000000000006020830152604082019050919050565b6000601082527f6f66666572696e675f61646472657373000000000000000000000000000000006020830152604082019050919050565b6000600b82527f6372656174655f646174650000000000000000000000000000000000000000006020830152604082019050919050565b6000600f82527f6f66666572696e675f6e756d62657200000000000000000000000000000000006020830152604082019050919050565b6000600c82527f636f6d70616e795f4e616d6500000000000000000000000000000000000000006020830152604082019050919050565b6000601282527f726567697374657265645f6361706974616c00000000000000000000000000006020830152604082019050919050565b6000600e82527f6f66666572696e67","5f70726963650000000000000000000000000000000000006020830152604082019050919050565b6000601a82527f556e69666965645f736f6369616c5f6372656469745f636f64650000000000006020830152604082019050919050565b6000600682527f73746174757300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600c82527f746f74616c5f73686172657300000000000000000000000000000000000000006020830152604082019050919050565b6000610140830160008301518482036000860152611c998282611999565b91505060208301518482036020860152611cb38282611999565b9150506040830151611cc86040860182611954565b506060830151611cdb6060860182611954565b506080830151611cee6080860182611954565b5060a0830151611d0160a0860182611954565b5060c0830151611d1460c0860182611954565b5060e083015184820360e0860152611d2c8282611999565b915050610100830151848203610100860152611d488282611999565b915050610120830151848203610120860152611d648282611999565b9150508091505092915050565b6000602082019050611d866000830184611954565b92915050565b60006020820190508181036000830152611da68184611999565b905092915050565b60006040820190508181036000830152611dc88185611963565b9050611dd76020830184611936565b9392505050565b60006040820190508181036000830152611df88185611999565b9050611e076020830184611945565b9392505050565b60006020820190508181036000830152611e2881846119cf565b905092915050565b60006020820190508181036000830152611e4981611a55565b9050919050565b60006040820190508181036000830152611e6981611a55565b90508181036020830152611e7d8184611999565b905092915050565b60006020820190508181036000830152611e9e81611a8c565b9050919050565b60006040820190508181036000830152611ebe81611a8c565b90508181036020830152611ed28184611999565b905092915050565b60006020820190508181036000830152611ef381611ac3565b9050919050565b60006040820190508181036000830152611f1381611ac3565b90508181036020830152611f278184611999565b905092915050565b60006020820190508181036000830152611f4881611afa565b9050919050565b60006040820190508181036000830152611f6881611afa565b9050611f776020830184611954565b92915050565b60006020820190508181036000830152611f9681611b31565b9050919050565b60006040820190508181036000830152611fb681611b31565b90508181036020830152611fca8184611999565b905092915050565b60006020820190508181036000830152611feb81611b68565b9050919050565b6000604082019050818103600083015261200b81611b68565b905061201a6020830184611954565b92915050565b6000602082019050818103600083015261203981611b9f565b9050919050565b6000604082019050818103600083015261205981611b9f565b90506120686020830184611954565b92915050565b6000602082019050818103600083015261208781611bd6565b9050919050565b600060408201905081810360008301526120a781611bd6565b905081810360208301526120bb8184611999565b905092915050565b600060408201905081810360008301526120dc81611bd6565b905081810360208301526120f08184611963565b905092915050565b6000602082019050818103600083015261211181611c0d565b9050919050565b6000604082019050818103600083015261213181611c0d565b90506121406020830184611954565b92915050565b6000602082019050818103600083015261215f81611c44565b9050919050565b6000604082019050818103600083015261217f81611c44565b905061218e6020830184611954565b92915050565b600060208201905081810360008301526121ae8184611c7b565b905092915050565b6000604051905081810181811067ffffffffffffffff821117156121d957600080fd5b8060405250919050565b600067ffffffffffffffff8211156121fa57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561222657600080fd5b601f19601f8301169050602081019050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061229882612263565b9050919050565b60006122aa82612263565b9050919050565b60006122bc82612263565b9050919050565b60006122ce82612263565b9050919050565b6000819050919050565b60006122ea82612263565b9050919050565b60006122fc82612263565b9050919050565b82818337600083830152505050565b60005b83811015612330578082015181840152602081019050612315565b8381111561233f576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a7230582071f1c6b79822c701dc19a05a477569aec80183a7df5d60e042e86dad7273202d6c6578706572696d656e74616cf50037"};

    public static final String BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040526040805190810160405280601881526020017f636f6d70616e795f676f65735f7461626c655f74657365330000000000000000815250600190805190602001906200005192919062000178565b503480156200005f57600080fd5b506110016000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92a780160016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200011b9190620003d7565b602060405180830381600087803b1580156200013657600080fd5b505af11580156200014b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200017191908101906200023d565b5062000441565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001bb57805160ff1916838001178555620001ec565b82800160010185558215620001ec579182015b82811115620001eb578251825591602001919060010190620001ce565b5b509050620001fb9190620001ff565b5090565b6200022491905b808211156200022057600081600090555060010162000206565b5090565b90565b600062000235825162000437565b905092915050565b6000602082840312156200025057600080fd5b6000620002608482850162000227565b91505092915050565b600081546001811660008114620002895760018114620002aa57620002ef565b607f600283041680865260ff198316602087015260408601935050620002ef565b60028204808652602086019550620002c28562000425565b60005b82811015620002e657815481890152600182019150602081019050620002c5565b80880195505050505b505092915050565b6000601a82527f556e69666965645f736f6369616c5f6372656469745f636f64650000000000006020830152604082019050919050565b6000607d82527f636f6d70616e795f4e616d652c726567697374657265645f6361706974616c2c60208301527f746f74616c5f7368617265732c6f66666572696e675f70726963652c6f66666560408301527f72696e675f6e756d6265722c6372656174655f646174652c6f66666572696e6760608301527f5f747970652c6f66666572696e675f616464726573732c737461747573000000608083015260a082019050919050565b60006060820190508181036000830152620003f3818462000269565b905081810360208301526200040881620002f7565b905081810360408301526200041d816200032e565b905092915050565b60008160005260206000209050919050565b6000819050919050565b61239080620004516000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806310e76ac71461005c5780635b325d7814610099578063895cb86f146100d6575b600080fd5b34801561006857600080fd5b50610083600480360361007e91908101906118f5565b610101565b6040516100909190611d71565b60405180910390f35b3480156100a557600080fd5b506100c060048036036100bb9190810190611873565b6108d1565b6040516100cd9190612194565b60405180910390f35b3480156100e257600080fd5b506100eb6113d0565b6040516100f89190611d8c565b60405180910390f35b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161017e9190611e0e565b602060405180830381600087803b15801561019857600080fd5b505af11580156101ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101d09190810190611821565b92508273ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061026e91908101906117f8565b91508173ffffffffffffffffffffffffffffffffffffffff16631a391cb486600001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016102c99190611e9e565b600060405180830381600087803b1580156102e357600080fd5b505af11580156102f7573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb486602001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016103549190612111565b600060405180830381600087803b15801561036e57600080fd5b505af1158015610382573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663def4269886604001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016103df9190611e50565b600060405180830381600087803b1580156103f957600080fd5b505af115801561040d573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663def4269886606001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161046a9190612166565b600060405180830381600087803b15801561048457600080fd5b505af1158015610498573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663def4269886608001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104f59190612075565b600060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663def426988660a001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105809190611f28565b600060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb48661012001516040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161060c9190611f76565b600060405180830381600087803b15801561062657600080fd5b505af115801561063a573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb48660e001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106979190612020565b600060405180830381600087803b1580156106b157600080fd5b505af11580156106c5573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb48661010001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016107239190611fcb565b600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663def426988660c001516040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016107ae91906120c3565b600060405180830381600087803b1580156107c857600080fd5b505af11580156107dc573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16634c6f30c08660000151846040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161083b929190611dde565b602060405180830381600087803b15801561085557600080fd5b505af1158015610869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061088d919081019061184a565b90507fdfc533ec2b52797a1229dc2495dbd3f4948f7c4c982ec077ad9d80810ec5c1f9816040516108be9190611d71565b60405180910390a1809350505050919050565b6108d961146e565b60008060006108e661146e565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b6560016040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109609190611e0e565b602060405180830381600087803b15801561097a57600080fd5b505af115801561098e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109b29190810190611821565b95508573ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610a1857600080fd5b505af1158015610a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a5091908101906117a6565b94508473ffffffffffffffffffffffffffffffffffffffff1663ae763db5896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610aa79190611ed3565b600060405180830381600087803b158015610ac157600080fd5b505af1158015610ad5573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff1663d8ac595789876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b30929190611dae565b602060405180830381600087803b158015610b4a57600080fd5b505af1158015610b5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b8291908101906117cf565b9350600091505b8373ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff","167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c25919081019061184a565b8212156113c2578373ffffffffffffffffffffffffffffffffffffffff16633dd2b614836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610c819190611d71565b602060405180830381600087803b158015610c9b57600080fd5b505af1158015610caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610cd391908101906117f8565b90508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d2890611e7e565b600060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610d7f91908101906118b4565b83600001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610dda906120f1565b600060405180830381600087803b158015610df457600080fd5b505af1158015610e08573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610e3191908101906118b4565b83602001819052508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610e8c90611e30565b602060405180830381600087803b158015610ea657600080fd5b505af1158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ede919081019061184a565b8360400181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610f3a90612146565b602060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f8c919081019061184a565b8360600181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610fe890612055565b602060405180830381600087803b15801561100257600080fd5b505af1158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061103a919081019061184a565b8360800181815250508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161109690611f08565b602060405180830381600087803b1580156110b057600080fd5b505af11580156110c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110e8919081019061184a565b8360a00181815250508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161114490611f56565b600060405180830381600087803b15801561115e57600080fd5b505af1158015611172573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061119b91908101906118b4565b8361012001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016111f790612000565b600060405180830381600087803b15801561121157600080fd5b505af1158015611225573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061124e91908101906118b4565b8360e001819052508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016112a990611fab565b600060405180830381600087803b1580156112c357600080fd5b505af11580156112d7573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061130091908101906118b4565b8361010001819052508073ffffffffffffffffffffffffffffffffffffffff16634900862e6040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161135c906120a3565b602060405180830381600087803b15801561137657600080fd5b505af115801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113ae919081019061184a565b8360c0018181525050816001019150610b89565b829650505050505050919050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114665780601f1061143b57610100808354040283529160200191611466565b820191906000526020600020905b81548152906001019060200180831161144957829003601f168201915b505050505081565b61014060405190810160405280606081526020016060815260200160008152602001600081526020016000815260200160008152602001600081526020016060815260200160608152602001606081525090565b60006114ce825161228d565b905092915050565b60006114e2825161229f565b905092915050565b60006114f682516122b1565b905092915050565b600061150a82516122c3565b905092915050565b600061151e82356122d5565b905092915050565b600061153282516122d5565b905092915050565b600082601f830112151561154d57600080fd5b813561156061155b826121e3565b6121b6565b9150808252602083016020830185838301111561157c57600080fd5b611587838284612303565b50505092915050565b600082601f83011215156115a357600080fd5b81356115b66115b18261220f565b6121b6565b915080825260208301602083018583830111156115d257600080fd5b6115dd838284612303565b50505092915050565b600082601f83011215156115f957600080fd5b815161160c6116078261220f565b6121b6565b9150808252602083016020830185838301111561162857600080fd5b611633838284612312565b50505092915050565b6000610140828403121561164f57600080fd5b61165a6101406121b6565b9050600082013567ffffffffffffffff81111561167657600080fd5b6116828482850161153a565b600083015250602082013567ffffffffffffffff8111156116a257600080fd5b6116ae8482850161153a565b60208301525060406116c284828501611512565b60408301525060606116d684828501611512565b60608301525060806116ea84828501611512565b60808301525060a06116fe84828501611512565b60a08301525060c061171284828501611512565b60c08301525060e082013567ffffffffffffffff81111561173257600080fd5b61173e8482850161153a565b60e08301525061010082013567ffffffffffffffff81111561175f57600080fd5b61176b8482850161153a565b6101008301525061012082013567ffffffffffffffff81111561178d57600080fd5b6117998482850161153a565b6101208301525092915050565b6000602082840312156117b857600080fd5b60006117c6848285016114c2565b91505092915050565b6000602082840312156117e157600080fd5b60006117ef848285016114d6565b91505092915050565b60006020828403121561180a57600080fd5b6000611818848285016114ea565b91505092915050565b60006020828403121561183357600080fd5b6000611841848285016114fe565b91505092915050565b60006020828403121561185c57600080fd5b600061186a84828501611526565b91505092915050565b60006020828403121561188557600080fd5b600082013567ffffffffffffffff81111561189f57600080fd5b6118ab84828501611590565b91505092915050565b6000602082840312156118c657600080fd5b600082015167ffffffffffffffff8111156118e057600080fd5b6118ec848285016115e6565b91505092915050565b60006020828403121561190757600080fd5b600082013567ffffffffffffffff81111561192157600080fd5b61192d8482850161163c565b91505092915050565b61193f816122df565b82525050565b61194e816122f1565b82525050565b61195d81612283565b82525050565b600061196e82612258565b808452611982816020860160208601612312565b61198b81612345565b602085010191505092915050565b60006119a48261224d565b8084526119b8816020860160208601612312565b6119c181612345565b602085010191505092915050565b6000815460018116600081146119ec5760018114611a0c57611a4d565b607f600283041680865260ff198316602087015260408601935050611a4d565b60028204808652602086019550611a228561223b565b60005b82811015611a4457815481890152600182019150602081019050611a25565b80880195505050505b505092915050565b6000601282527f726567697374657265645f6361706974616c00000000000000000000000000006020830152604082019050919050565b6000601a82527f556e69666965645f736f6369616c5f6372656469745f636f64650000000000006020830152604082019050919050565b6000600f82527f6f66666572696e675f6e756d62657200000000000000000000000000000000006020830152604082019050919050565b6000600b82527f6372656174655f646174650000000000000000000000000000000000000000006020830152604082019050919050565b6000601082527f6f66666572696e675f61646472657373000000000000000000000000000000006020830152604082019050919050565b6000600d82527f6f66666572696e675f74797065000000000000000000000000000000000000006020830152604082019050919050565b6000600e82527f6f66666572696e67","5f70726963650000000000000000000000000000000000006020830152604082019050919050565b6000600682527f73746174757300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600c82527f636f6d70616e795f4e616d6500000000000000000000000000000000000000006020830152604082019050919050565b6000600c82527f746f74616c5f73686172657300000000000000000000000000000000000000006020830152604082019050919050565b6000610140830160008301518482036000860152611c998282611999565b91505060208301518482036020860152611cb38282611999565b9150506040830151611cc86040860182611954565b506060830151611cdb6060860182611954565b506080830151611cee6080860182611954565b5060a0830151611d0160a0860182611954565b5060c0830151611d1460c0860182611954565b5060e083015184820360e0860152611d2c8282611999565b915050610100830151848203610100860152611d488282611999565b915050610120830151848203610120860152611d648282611999565b9150508091505092915050565b6000602082019050611d866000830184611954565b92915050565b60006020820190508181036000830152611da68184611999565b905092915050565b60006040820190508181036000830152611dc88185611963565b9050611dd76020830184611936565b9392505050565b60006040820190508181036000830152611df88185611999565b9050611e076020830184611945565b9392505050565b60006020820190508181036000830152611e2881846119cf565b905092915050565b60006020820190508181036000830152611e4981611a55565b9050919050565b60006040820190508181036000830152611e6981611a55565b9050611e786020830184611954565b92915050565b60006020820190508181036000830152611e9781611a8c565b9050919050565b60006040820190508181036000830152611eb781611a8c565b90508181036020830152611ecb8184611999565b905092915050565b60006040820190508181036000830152611eec81611a8c565b90508181036020830152611f008184611963565b905092915050565b60006020820190508181036000830152611f2181611ac3565b9050919050565b60006040820190508181036000830152611f4181611ac3565b9050611f506020830184611954565b92915050565b60006020820190508181036000830152611f6f81611afa565b9050919050565b60006040820190508181036000830152611f8f81611afa565b90508181036020830152611fa38184611999565b905092915050565b60006020820190508181036000830152611fc481611b31565b9050919050565b60006040820190508181036000830152611fe481611b31565b90508181036020830152611ff88184611999565b905092915050565b6000602082019050818103600083015261201981611b68565b9050919050565b6000604082019050818103600083015261203981611b68565b9050818103602083015261204d8184611999565b905092915050565b6000602082019050818103600083015261206e81611b9f565b9050919050565b6000604082019050818103600083015261208e81611b9f565b905061209d6020830184611954565b92915050565b600060208201905081810360008301526120bc81611bd6565b9050919050565b600060408201905081810360008301526120dc81611bd6565b90506120eb6020830184611954565b92915050565b6000602082019050818103600083015261210a81611c0d565b9050919050565b6000604082019050818103600083015261212a81611c0d565b9050818103602083015261213e8184611999565b905092915050565b6000602082019050818103600083015261215f81611c44565b9050919050565b6000604082019050818103600083015261217f81611c44565b905061218e6020830184611954565b92915050565b600060208201905081810360008301526121ae8184611c7b565b905092915050565b6000604051905081810181811067ffffffffffffffff821117156121d957600080fd5b8060405250919050565b600067ffffffffffffffff8211156121fa57600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561222657600080fd5b601f19601f8301169050602081019050919050565b60008160005260206000209050919050565b600081519050919050565b600081519050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061229882612263565b9050919050565b60006122aa82612263565b9050919050565b60006122bc82612263565b9050919050565b60006122ce82612263565b9050919050565b6000819050919050565b60006122ea82612263565b9050919050565b60006122fc82612263565b9050919050565b82818337600083830152505050565b60005b83811015612330578082015181840152602081019050612315565b8381111561233f576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820912758a6c059f98193aea8125b9006a352691b5d1fca94da3f5439c75035fe3c6c6578706572696d656e74616cf50037"};

    public static final String SM_BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"constant\":false,\"inputs\":[{\"components\":[{\"name\":\"Unified_social_credit_code\",\"type\":\"string\"},{\"name\":\"company_Name\",\"type\":\"string\"},{\"name\":\"registered_capital\",\"type\":\"int256\"},{\"name\":\"total_shares\",\"type\":\"int256\"},{\"name\":\"offering_price\",\"type\":\"int256\"},{\"name\":\"offering_number\",\"type\":\"int256\"},{\"name\":\"status\",\"type\":\"int256\"},{\"name\":\"offering_type\",\"type\":\"string\"},{\"name\":\"offering_address\",\"type\":\"string\"},{\"name\":\"create_date\",\"type\":\"string\"}],\"name\":\"goes\",\"type\":\"tuple\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"company_info\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"Unified_social_credit_code\",\"type\":\"string\"}],\"name\":\"select\",\"outputs\":[{\"components\":[{\"name\":\"Unified_social_credit_code\",\"type\":\"string\"},{\"name\":\"company_Name\",\"type\":\"string\"},{\"name\":\"registered_capital\",\"type\":\"int256\"},{\"name\":\"total_shares\",\"type\":\"int256\"},{\"name\":\"offering_price\",\"type\":\"int256\"},{\"name\":\"offering_number\",\"type\":\"int256\"},{\"name\":\"status\",\"type\":\"int256\"},{\"name\":\"offering_type\",\"type\":\"string\"},{\"name\":\"offering_address\",\"type\":\"string\"},{\"name\":\"create_date\",\"type\":\"string\"}],\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_INSERT = "insert";

    public static final String FUNC_COMPANY_INFO = "company_info";

    public static final String FUNC_SELECT = "select";

    public static final Event CREATERESULT_EVENT = new Event("CreateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event INSERTRESULT_EVENT = new Event("InsertResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event UPDATERESULT_EVENT = new Event("UpdateResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    public static final Event REMOVERESULT_EVENT = new Event("RemoveResult", 
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
    ;

    protected CompanyGoesTGtable(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public TransactionReceipt insert(Struct0 goes) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(goes), 
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] insert(Struct0 goes, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(goes), 
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForInsert(Struct0 goes) {
        final Function function = new Function(
                FUNC_INSERT, 
                Arrays.<Type>asList(goes), 
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<Struct0> getInsertInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Struct0>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<Struct0>(

                (Struct0) results.get(0)
                );
    }

    public Tuple1<BigInteger> getInsertOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERT, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {}));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
                );
    }

    public String company_info() throws ContractException {
        final Function function = new Function(FUNC_COMPANY_INFO, 
                Arrays.<Type>asList(), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {}));
        return executeCallWithSingleValueReturn(function, String.class);
    }

    public Struct0 select(String Unified_social_credit_code) throws ContractException {
        final Function function = new Function(FUNC_SELECT, 
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Unified_social_credit_code)), 
                Arrays.<TypeReference<?>>asList(new TypeReference<Struct0>() {}));
        return executeCallWithSingleValueReturn(function, Struct0.class);
    }

    public List<CreateResultEventResponse> getCreateResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CREATERESULT_EVENT, transactionReceipt);
        ArrayList<CreateResultEventResponse> responses = new ArrayList<CreateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CreateResultEventResponse typedResponse = new CreateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCreateResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeCreateResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<InsertResultEventResponse> getInsertResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(INSERTRESULT_EVENT, transactionReceipt);
        ArrayList<InsertResultEventResponse> responses = new ArrayList<InsertResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            InsertResultEventResponse typedResponse = new InsertResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeInsertResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeInsertResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<UpdateResultEventResponse> getUpdateResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATERESULT_EVENT, transactionReceipt);
        ArrayList<UpdateResultEventResponse> responses = new ArrayList<UpdateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            UpdateResultEventResponse typedResponse = new UpdateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeUpdateResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeUpdateResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public List<RemoveResultEventResponse> getRemoveResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(REMOVERESULT_EVENT, transactionReceipt);
        ArrayList<RemoveResultEventResponse> responses = new ArrayList<RemoveResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            RemoveResultEventResponse typedResponse = new RemoveResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeRemoveResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,fromBlock,toBlock,otherTopics,callback);
    }

    public void subscribeRemoveResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(ABI,BINARY,topic0,callback);
    }

    public static CompanyGoesTGtable load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new CompanyGoesTGtable(contractAddress, client, credential);
    }

    public static CompanyGoesTGtable deploy(Client client, CryptoKeyPair credential) throws ContractException {
        return deploy(CompanyGoesTGtable.class, client, credential, getBinary(client.getCryptoSuite()), "");
    }

    public static class Struct0 extends DynamicStruct {
        public String Unified_social_credit_code;

        public String company_Name;

        public BigInteger registered_capital;

        public BigInteger total_shares;

        public BigInteger offering_price;

        public BigInteger offering_number;

        public BigInteger status;

        public String offering_type;

        public String offering_address;

        public String create_date;

        public Struct0(Utf8String Unified_social_credit_code, Utf8String company_Name, Int256 registered_capital, Int256 total_shares, Int256 offering_price, Int256 offering_number, Int256 status, Utf8String offering_type, Utf8String offering_address, Utf8String create_date) {
            super(Unified_social_credit_code,company_Name,registered_capital,total_shares,offering_price,offering_number,status,offering_type,offering_address,create_date);
            this.Unified_social_credit_code = Unified_social_credit_code.getValue();
            this.company_Name = company_Name.getValue();
            this.registered_capital = registered_capital.getValue();
            this.total_shares = total_shares.getValue();
            this.offering_price = offering_price.getValue();
            this.offering_number = offering_number.getValue();
            this.status = status.getValue();
            this.offering_type = offering_type.getValue();
            this.offering_address = offering_address.getValue();
            this.create_date = create_date.getValue();
        }

        public Struct0(String Unified_social_credit_code, String company_Name, BigInteger registered_capital, BigInteger total_shares, BigInteger offering_price, BigInteger offering_number, BigInteger status, String offering_type, String offering_address, String create_date) {
            super(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(Unified_social_credit_code),new org.fisco.bcos.sdk.abi.datatypes.Utf8String(company_Name),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(registered_capital),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(total_shares),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(offering_price),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(offering_number),new org.fisco.bcos.sdk.abi.datatypes.generated.Int256(status),new org.fisco.bcos.sdk.abi.datatypes.Utf8String(offering_type),new org.fisco.bcos.sdk.abi.datatypes.Utf8String(offering_address),new org.fisco.bcos.sdk.abi.datatypes.Utf8String(create_date));
            this.Unified_social_credit_code = Unified_social_credit_code;
            this.company_Name = company_Name;
            this.registered_capital = registered_capital;
            this.total_shares = total_shares;
            this.offering_price = offering_price;
            this.offering_number = offering_number;
            this.status = status;
            this.offering_type = offering_type;
            this.offering_address = offering_address;
            this.create_date = create_date;
        }
    }

    public static class CreateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class InsertResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class UpdateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class RemoveResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }
}
